//
// Created by ASUS on 2024/6/3/星期一.
//
#include <bits/stdc++.h>
using namespace std;
//所有可能的结果值以及对应的区间个数
unordered_map<int,int> logTrick(vector<int>& nums,function<int(const int &, const int &)> op){
	unordered_map<int,int> res;
	vector<vector<int>> dp;
	for(int i=0;i<nums.size();i++){
		for(auto&v:dp){
			v[2]=op(v[2],nums[i]);
		}
		dp.push_back({i,i+1,nums[i]});
		int ptr=0;
		for(int j=1;j<dp.size();j++){
			if(dp[ptr][2]!=dp[j][2]){
				ptr++;
				dp[ptr]=dp[j];
			}else{
				dp[ptr][1]=dp[j][1];
			}
		}
		dp.resize(ptr+1);
		for(auto&v:dp){
			res[v[2]]=v[1]-v[0];
		}
	}
	return res;
}